<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Js中的函数</title>
</head>
<body>
    <script type="text/javascript">
        // js 中的函数
        // 语法格式: js 中的函数不需要指定返回值, 想返回啥返回啥
        // 方式1:
        // function 函数名 (形参列表) {
        //     函数体;
        // }
        // 方式2:
        // 函数名 = function(形参列表) {
        //     函数体;
        // }
        // 脚本块中的东西打开页面就执行, 但是函数没有调用不会执行
        function sun(a, b) {
            // a 和 b 都是局部变量的变量名
            // 不能写 (var a, var b)
            alert(a + b);
        }
        // 如果没有这里的调用就不会执行
        sun(10, 20);

        // 或者绑定事件
        sayHello = function (username) {
            alert("hello " + username);
        }
        //sayHello("张三")


        function sum(a, b) {
            return a + b;
        }

        // 参数缺省的情况
        var retValue = sum("jack"); // 第一个参数为 "jack" 第二个参数默认为 undefined
        alert(retValue);// jackundefined

        retValue = sum();
        alert(retValue);// NaN , NaN是一个具体存在的值, 该值表示不是数字, Not a Number.

        // 参数过多
        retValue = sum(1, 2, 3);
        alert("结果 = " + retValue);// 结果 = 3 ,说明只有前两个参数生效

        // 一个顶 N 个, 不需要重载
        function test1(username) {
            alert(1);
        }
        function test1() {
            alert(2);
        }
        // js 中如果函数同名(参数列表不一样也覆盖), 则后面的函数会覆盖前面的函数
        // 所以实际开发中函数不要同名(除非你的目的就是折磨别人)
        test1("lisi");//2, 调用了第二个函数
    </script>

    <input type="button" value="hello" onclick="sayHello('张三')"/>
</body>
</html>